package utils

import "strings"

// RemoveItemsContainingSubstring
// 从字符串数组切片里移除包含substr字符串的项并移除连续空格字符
func RemoveItemsContainingSubstring(arr []string, substr string) []string {
	result := make([]string, 0)
	for _, s := range arr {
		if !strings.Contains(s, substr) && s != "" {
			result = append(result, RemoveMultiSpaces(strings.TrimSpace(s)))
		}
	}
	return result
}

// RemoveItemsNotContainingSubstring
// 从字符串数组切片里移除不包含substr字符串的项并移除连续空格字符
func RemoveItemsNotContainingSubstring(arr []string, substr string) []string {
	result := make([]string, 0)
	for _, s := range arr {
		if strings.Contains(s, substr) {
			result = append(result, RemoveMultiSpaces(strings.TrimSpace(s)))
		}
	}
	return result
}

// RemoveFirstString
// 从字符串数组切片里移除第一个元素
func RemoveFirstString(slice []string) []string {
	if len(slice) == 0 {
		return slice // 或者返回nil，根据你的需求而定
	}
	// 将第二个元素到最后一个元素前移
	copy(slice, slice[1:])
	// 缩短切片长度
	return slice[:len(slice)-1]
}

// RemoveMatchString
// 按正则表达式移除字符串数组切片中的元素
// method为1则移除匹配项
// method为2则移除不匹配项
func RemoveMatchString(slice []string, pattern string, method int) []string {
	// 如果method不为1和2，则返回原切片
	if method != 1 && method != 2 {
		return slice
	}
	result := make([]string, 0)
	for _, item := range slice {
		match := MatchString(item, pattern)
		// 如果method为1，那么移除匹配项，所以判断未匹配的加入返回切片
		if method == 1 && !match {
			result = append(result, item)
		}
		// 如果method为2，那么移除不匹配项，所以判断匹配的加入返回切片
		if method == 2 && match {
			result = append(result, item)
		}
	}
	return result
}
